package com.lekang.ZcqEntity;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

@Data

public class Bill {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */

    private Long id;

    /**
     * 账单编号（唯一）
     */

    private String billNo;

    /**
     * 账单类型（如：月度）
     */

    private String billType;

    /**
     * 账单月份（如：2025-10）
     */

    private String billMonth;

    /**
     * 老人外键编号（关联elderly表id）
     */

    private Long elderlyId;

    /**
     * 每月应付
     */

    private BigDecimal monthlyPayable;

    /**
     * 本期应付
     */

    private BigDecimal currentPayable;

    /**
     * 预交款支付金额
     */

    private BigDecimal prepaymentAmount;

    /**
     * 账单金额
     */

    private BigDecimal billAmount;

    /**
     * 应付金额
     */

    private BigDecimal payableAmount;

    /**
     * 支付截至日期
     */
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate paymentDeadline;

    /**
     * 交易状态（如：待支付、已支付、已关闭）
     */

    private String transactionStatus;

    /**
     * 账单开始时间
     */

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime billStartTime;

    /**
     * 账单结束时间
     */

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime billEndTime;

    /**
     * 创建人（关联sys_user表user_id）
     */

    private Long creator;

    /**
     * 创建时间
     */

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 支付渠道
     */

    private String paymentChannel;

    /**
     * 支付方式
     */

    private String paymentMethod;

    /**
     * 支付凭证图片（路径）
     */

    private String paymentVoucher;

    /**
     * 支付备注
     */

    private String paymentRemark;

    /**
     * 取消原因
     */

    private String cancelReason;

    /**
     * 关联订单
     */

    private String relatedOrder;

    /**
     * 额外字段1
     */

    private String extraField1;

    /**
     * 额外字段2
     */

    private String extraField2;
}